#pragma once
#include "base_register.h"
#include "sf_register.h"
#include "memory.h"
#include "options.h"

using sfr8 = sf_register<8>;
using sfr16 = sf_register<16>;
using register8 = base_register<8>;
using register16 = base_register<16>;

#define RAM_SFR(name)

template <options::device_version V>
class register_group;

template <>
class register_group<options::device_version::C51> {
public:

protected:
	sfr8 _b;
	sfr8 _acc;
	sfr8 _psw;

	sfr8 _ip;
	sfr8 _p3;
	sfr8 _ie;

	sfr8 _r[8][4];
};

template <>
class register_group<options::device_version::C52>: public register_group<options::device_version::C51> {
protected:

};